package com.atbeijing.bigdata.spark.core.rdd.operator.transform

import org.apache.spark.{SparkConf, SparkContext}

object Spark21_Oper_Transform {

    def main(args: Array[String]): Unit = {

        val conf = new SparkConf().setMaster("local[*]").setAppName("TransformOperator")
        val sc = new SparkContext(conf)

        // TODO 算子 - 转换 - KV - join
        val rdd1 = sc.makeRDD(
            List(
                ("a", 1), ("b", 2), ("c", 3)
            )
        )
        val rdd2 = sc.makeRDD(
            List(
                ("a", 5), ("c", 6),("a", 4)
            )
        )

        // student (FK)
        // classes

        // 两个数据集可以连接的条件是相同的key的数据进行连接,没有关联的舍去
        // 只要数据中有相同的key，都会进行连接，不考虑数量的问题
        // join 可能会产生大量的数据，如果业务中存在shuffle，那么性能非常差
        // 所以不推荐使用
        rdd1.join(rdd2).collect().foreach(println)
//        (a,(1,5))
//        (a,(1,4))
//        (c,(3,6))



        sc.stop()

    }

}
